A complex programmable logic device (CPLD) has a number of logic blocks each containing a number of individual programmable macrocells. CPLDs can be easily programmed by engineers in the field and later erased and re-programmed. This allows the designer to make any changes to their system very late in the development cycle, thus realizing a competitive design advantage.
Product-term arrays inside a CPLD are created by providing both a positive and negative polarity of a number of signals that are presented as inputs to the product-term array. FIG. 1 illustrates a product-term array 10 having such a configuration. The product-term array 10 generally comprises a number of inputs 12a-12n and a number of outputs 14a-14n. Each of the inputs 12a-12n is presented to one of a number of buffers 16a-16n. Each of the buffers 16a-16n presents both a true and a complement output of the signal received at the respective input 12a-12n. For example, the buffer 16a has a true output 18a and a complement output 20a. The outputs 18a-18n and 20a-20n are presented to a number of product-term input lines 22a-22n and 24a-24n, respectively. The product-term input lines 22a-22n and 24a-24n are extended in a vertical direction by a number of vertical lines 30a-30n. The vertical lines 30a-30n generally cross a number of product-term lines 32a-32n, which are generally presented to a number of logic gates 34a-34n. The logic gates 34a-34n generally present signals to the outputs 14a-14n.
The disadvantages of providing both the positive and negative polarities (i.e., the true and complement signals) of each input signal 12a-12n include (i) an increased area needed to implement the outputs 22a-22n and 24a-24n for each of the buffers 16a-16n and (ii) longer overall propagation delays due to the increased length of the product-term lines 32a-32n. By increasing the length of the product-term lines 32a-32n, additional silicon die area is required. An increased capacitance on the product-term lines 32a-32n and the product-term input lines 22a-22n (and 24a-24n) increases the propagation delays through the product-term array 10.